package com.yuw.chuanzhi;

public class TestDriver {
    public static void main(String[] args) {
        System.out.println("按值传参：==================================");
        test01();
        System.out.println("按引用传参：==================================");
        test02();
    }

    /**
     * 按引用传参
     */
    public static void test02() {
        // 实参
        Student student = new Student("张三", 20);
        System.out.println("子方法被调用前实参的值：" + student.toString());
        // 调用子方法 -- 按值传参
        test02_sub(student);
        System.out.println("子方法被调用后实参的值：" + student.toString());

    }

    /**
     * 子方法
     *
     * @param stu 参数
     */
    public static void test02_sub(Student stu) {
        // 子方法中改变形参的值
        stu.setStuName("李四");
        System.out.println("子方法中形参的值发生了改变：" + stu.toString());
    }


    /**
     * 按值传参
     */
    public static void test01() {
        // 实参
        int v = 20;
        System.out.println("子方法被调用前实参的值：" + v);
        // 调用子方法 -- 按值传参
        test01_sub(v);
        System.out.println("子方法被调用后实参的值：" + v);

    }

    /**
     * 子方法
     *
     * @param val 参数
     */
    public static void test01_sub(int val) {
        // 子方法中改变形参的值
        val = val + 2;
        System.out.println("子方法中形参的值发生了改变：" + val);
    }
}
